package com.resou.reader.data.bookshelf;

import com.resou.reader.api.entry.AddShelfResultBean;
import com.resou.reader.api.entry.CommonData;
import com.resou.reader.api.entry.CommonshelfData;
import com.resou.reader.api.entry.Result;
import com.resou.reader.api.entry.ResultList;
import com.resou.reader.data.bookshelf.model.BookShelfBook;
import com.resou.reader.data.bookshelf.model.ScrollNotice;
import com.resou.reader.data.bookshelf.response.DeleteResponse;

import java.util.List;

import io.reactivex.Observable;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import retrofit2.http.Query;

public interface BookshelfService {

    /**
     * 添加到书架
     */
    @FormUrlEncoded
    @POST("bookrackTest/MobileAddTobookRack")
    Observable<Result<CommonData<AddShelfResultBean>>> addToBookShelf(@Field("bookIdStr") String bookIdStr, @Field("token") String token, @Field("device") String device);

    /**
     * 获取书架书本列表
     */
    @POST("bookrackTest/AppbookrackList")
    Observable<Result<CommonData<List<BookShelfBook>>>> getShelfBooks(@Query("clientVersion") String clientVersion, @Query("token") String token, @Query("page") int page, @Query("device") String device);

    /**
     * 校验该书是否已收藏
     */
    @FormUrlEncoded
    @POST("bookrackTest/checkAddToBookrack")
    Observable<Result<Integer>> checkIsCollected(@Field("bookId") String bookId, @Field("token") String token);

    /**
     * 添加到书架
     * @param bookIdStr
     * @param token
     * @param device
     * @return
     */
    @FormUrlEncoded
    @POST("bookrackTest/MobileAddTobookRack")
    Call<Result<CommonData<AddShelfResultBean>>> add(@Field("bookIdStr") String bookIdStr, @Field("token") String token, @Field("device") String device);

    /**
     * 按页获取书籍
     * @param token
     * @param page
     * @return
     */
    @POST("bookrackTest/AppbookrackList")
    Call<Result<CommonData<List<BookShelfBook>>>> get(@Query("token") String token, @Query("page") int page);

    /**
     * 删除书籍
     * @param token
     * @param bookIdStr
     * @return
     */
    @POST("bookrackTest/deleteBookrack")
    Call<DeleteResponse> delete(@Query("token") String token, @Query("bookIdStr") String bookIdStr);

    /**
     * 按页获取书籍
     * @param token
     * @param page
     * @return
     */
    @POST("bookrackTest/AppbookrackList")
    Observable<Result<CommonshelfData<List<BookShelfBook>>>> getShelfBooks(@Query("token") String token, @Query("page") int page, @Query("pageSize") int pagesize);

    /**
     * 删除书籍
     * @param token
     * @param bookIdStr
     * @return
     */
    @FormUrlEncoded
    @POST("bookrackTest/deleteBookrack")
    Observable<DeleteResponse> deleteBook(@Field("token") String token, @Field("bookIdStr") String bookIdStr);

    /**
     * 滚动公告栏
     * @param token 用户的token
     * @return
     */
    @FormUrlEncoded
    @POST("bookrackTest/scrollNotice")
    Observable<ResultList<ScrollNotice>> getScrollBulletinBoard(@Field("token") String token);
//    http://47.105.43.74:8088/mobileserver/bookrackTest/AppbookrackList?token=665679F4E385599A9893FB48C94C696F&page=0

    /**
     * 上传免费书籍
     *
     * @param token 用户的token
     * @return
     */
    @FormUrlEncoded
    @POST("bookrackTest/APPAddTobookRack")
    Observable<Result> uploadBooks(@Field("token") String token, @Field("bookIdStr") String bookStr, @Field("device") String device);

//    /**
//     * 上传书籍
//     * @param token 用户的token
//     * @param bookStr 逗号分隔的字符串
//     * @param freeStatus 免费状态 0免费 1收费
//     * @return
//     */
//    @FormUrlEncoded
//    @POST("bookrackTest/MobileAddTobookRack")
//    Observable<Result<String>> uploadBooks(@Field("token") String token, @Field("bookIdStr") String bookStr, @Field("freeStatus") int freeStatus);

}
